home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d26 / inf_src.arc / REMANTE.C < prev    next >
C/C++ Source or Header  |  1986-03-14  |  2KB  |  75 lines

  1.  
  2.  
  3. /*****************************************************************
  4. **                                **
  5. **      Inference -- (C) Copyright 1985 George Hageman    **
  6. **                                **
  7. **        user-supported software:                **
  8. **                                **
  9. **            George Hageman                **
  10. **            P.O. Box 11234                **
  11. **            Boulder, Colorado 80302            **
  12. **                                **
  13. *****************************************************************/
  14.  
  15. /***********************************************
  16. **
  17. **    remAnte(antecedent)
  18. **
  19. **    returns the truth value of the fact to be remembered
  20. **    similar to verify except that the fact is a known antecedent
  21. **    and is not a consequent of any rule.  And therefore can be remembered
  22. **    false as well as true.
  23. **
  24. ************************************************/
  25.  
  26. #include <stdio.h>
  27. #include "expert.h"
  28. #include "inference.h"
  29.  
  30.  
  31. int    remAnte(antecedent)
  32.     int    antecedent ;
  33. {
  34. int p_value ;
  35.  
  36. switch(ruleBuff[antecedent].flag)
  37.     {
  38.     case STRING_TRUE :
  39.     case STRING_TRUE_HYP:
  40.         knownTrue[numTrue++]=ruleBuff[antecedent].string ;
  41.         return(TRUE) ;
  42.     case STRING_FALSE :
  43.         knownTrue[numTrue++]=ruleBuff[antecedent].string ;
  44.         return(FALSE) ;
  45.     default:  /* routine to run */
  46.         if(weKnow(antecedent,&p_value) == TRUE)
  47.             return(p_value) ;
  48.         if( runRoutine(antecedent) == TRUE )
  49.             {
  50.             knownTrue[numTrue++]=ruleBuff[antecedent].string ;
  51.             if((ruleBuff[antecedent].flag == ROUTINE_TRUE) ||
  52.                 (ruleBuff[antecedent].flag == ROUTINE_TRUE_HYP))
  53.                 {
  54.                 return(TRUE) ;
  55.                 }
  56.             else
  57.                 {
  58.                 return(FALSE) ;
  59.                 }
  60.             }
  61.         else
  62.             {
  63.             knownFalse[numFalse++]=ruleBuff[antecedent].string ;
  64.             if(ruleBuff[antecedent].flag == ROUTINE_FALSE)
  65.                 {
  66.                 return(TRUE) ;
  67.                 }
  68.             else
  69.                 {
  70.                 return(FALSE) ;
  71.                 }
  72.             }
  73.     }
  74. }         
  75.